// 2. 在 fn 函数中通过形参 callback 接收了 handler 函数
function fn(callback) {
    // var callback = handler
    // callback 就是我们的 handler
    console.log(1, '函数开始执行')

    // 定时器是异步的，所以遇到定时器不会等待，函数会继续往后执行
    setTimeout(function() {
        console.log(2)

        // 我想调用 fn 得到这里的 num
        const num = 123

        // 定时器操作结束，我们就可以在这里调用 callback（也就是我们的 handler）函数，把结果 num 传递给了该函数
        // 我们这里调用 callback 也就是在调用 handler
        callback(num)
    }, 1000)

    // 到这里 fn 函数就执行结束了（定时器还没有被调用），所以你拿到的 num 就是 undefined
    console.log(3)
}

var handler = function(data) {
    console.log('handler 函数被调用了：', data)
}

// 1. 这里把 handler 传递到了 fn 函数中
fn(handler)